<?php
class Sosweb_View_Helper_DataPaging
{
	public function dataPaging($pageNo, $dataCount, $baseUrl, $sortColumn, $category, $pagingLink)
	{
		$dataPortion = Sosweb_Const_ProfitmaniaConst::$TABLE_VIEW_DATA_NUM;
		$pagingMaxNum = Sosweb_Const_ProfitmaniaConst::$PAGING_MAX_NUM;
		$pagingSize = ceil($dataCount/$dataPortion);
		$middlePagingPositionLower = floor($pagingMaxNum/2) + 1;
		$middlePagingPositionHigher = $pagingSize - (floor($pagingMaxNum/2) + 1);
		
		$link = $baseUrl.$pagingLink;
		
		if ($sortColumn != null && strlen($sortColumn) > 0)
		{
			$link .= '/sort/'.$sortColumn;
		}
		
		if ($category != null && strlen($category) > 0)
		{
			$link .= '/category/'.$category;
		}
		
		$link .= '/pageNo/';
		
		if ($pageNo <= $pagingSize)
		{
			$html =
				'<table class="navigatorMenu" align="right"> '.
				' <tr> '.
				'  <td class="pageLinkCell"> '.
				'   <a class="pageLink" href="'.$link.'1" title="Pierwsza strona" > << </a>'.
				'  </td> ';
	
			if ($pagingSize <= $pagingMaxNum)
			{
				//<< < 1 2 3 4 5 6 7 8 9 10 11 > >>
				$startPage = 1;
				$endPage = $pagingSize;
				
				$html .=
					'  <td class="pageLinkCell"> '.
					'   <a class="pageLink" href="'.$link.($pageNo-1 < $startPage ? $startPage : $pageNo-1).'" title="Poprzednia strona" > < </a>'.
					'  </td> ';				
				
				for ($i=$startPage; $i<=$endPage; $i++):
					$html .=
						'  <td class="pageLinkCell'.($i == $pageNo ? ' pageLinkCell-selected' : '').'"> '.
						'   <a class="pageLink" href="'.$link.$i.'" title="Strona '.$i.'" > '.$i.' </a>'.				
						'  </td> ';
				endfor;
				
				$html .=
					'  <td class="pageLinkCell"> '.
					'   <a class="pageLink" href="'.$link.($pageNo+1 > $endPage ? $endPage : $pageNo+1).'" title="Następna strona" > > </a>'.
					'  </td> ';					
			}
			else
			{
				if ($pageNo <= $middlePagingPositionLower)
				{
					//<< < 1 2 3 4 5 6 7 8 9 10 11 ... > >>
					$startPage = 1;
					$endPage = $pagingMaxNum;
					
					$html .=
						'  <td class="pageLinkCell"> '.
						'   <a class="pageLink" href="'.$link.($pageNo-1 < $startPage ? $startPage : $pageNo-1).'" title="Poprzednia strona" > < </a>'.
						'  </td> ';
											
					for ($i=$startPage; $i<=$endPage; $i++):
						$html .=
							'  <td class="pageLinkCell'.($i == $pageNo ? ' pageLinkCell-selected' : '').'"> '.
							'   <a class="pageLink" href="'.$link.$i.'" title="Strona '.$i.'" > '.$i.' </a>'.				
							'  </td> ';
					endfor;
					
					$html .=
						'  <td class="pageLinkCell">...</td> ';	

					$html .=
						'  <td class="pageLinkCell"> '.
						'   <a class="pageLink" href="'.$link.($pageNo+1).'" title="Następna strona" > > </a>'.
						'  </td> ';					
				}
				elseif ($pageNo >= $middlePagingPositionHigher)
				{
					//<< < ... 91 92 93 94 95 96 97 98 99 910 911 > >>
					$startPage = $pagingSize - $pagingMaxNum + 1;
					$endPage = $pagingSize;
					
					$html .=
						'  <td class="pageLinkCell"> '.
						'   <a class="pageLink" href="'.$link.($pageNo-1).'" title="Poprzednia strona" > < </a>'.
						'  </td> ';	
										
					$html .=
						'  <td class="pageLinkCell">...</td> ';				
					
					for ($i=$startPage; $i<=$endPage; $i++):
						$html .=
							'  <td class="pageLinkCell'.($i == $pageNo ? ' pageLinkCell-selected' : '').'"> '.
							'   <a class="pageLink" href="'.$link.$i.'" title="Strona '.$i.'" > '.$i.' </a>'.				
							'  </td> ';
					endfor;
					
					$html .=
						'  <td class="pageLinkCell"> '.
						'   <a class="pageLink" href="'.$link.($pageNo+1 > $endPage ? $endPage : $pageNo+1).'" title="Następna strona" > > </a>'.
						'  </td> ';					
				}
				else
				{
					//<< < ... 21 22 23 24 25 26 27 28 29 30 31 ... > >>
					$startPage = $pageNo - ($middlePagingPositionLower-1);
					$endPage = $pageNo + ($middlePagingPositionLower-1);
	
					$html .=
						'  <td class="pageLinkCell"> '.
						'   <a class="pageLink" href="'.$link.($pageNo-1).'" title="Poprzednia strona" > < </a>'.
						'  </td> ';	
										
					$html .=
						'  <td class="pageLinkCell"">...</td> ';
									
					for ($i=$startPage; $i<=$endPage; $i++):
						$html .=
							'  <td class="pageLinkCell'.($i == $pageNo ? ' pageLinkCell-selected' : '').'"> '.
							'   <a class="pageLink" href="'.$link.$i.'" title="Strona '.$i.'" > '.$i.' </a>'.				
							'  </td> ';
					endfor;
													
					$html .=
						'  <td class="pageLinkCell">...</td> ';	

					$html .=
						'  <td class="pageLinkCell"> '.
						'   <a class="pageLink" href="'.$link.($pageNo+1).'" title="Następna strona" > > </a>'.
						'  </td> ';					
				}			
			}
			
			$html .=
				'  <td class="pageLinkCell"> '.
				'   <a class="pageLink" href="'.$link.$pagingSize.'" title="Ostatnia strona" > >> </a>'.
				'  </td> '.		
				' </tr> '.
				'</table> ';		
	
			return $html;
		}
		else
		{
			return '';
		}
	}
}